package org.ehe.business.supplier.domain.bo;

import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.fasterxml.jackson.annotation.JsonFormat;
import io.github.linpeilie.annotations.AutoMapper;
import lombok.Data;
import lombok.EqualsAndHashCode;
import org.ehe.business.engineer.domain.EngineerEntity;
import org.ehe.business.supplier.domain.SupplierInfo;
import org.ehe.common.mybatis.core.domain.BaseEntity2;

import java.math.BigDecimal;
import java.time.LocalDate;
import java.time.LocalDateTime;
import java.util.List;

/**
 * @author :zhangnn
 * @className :SupplierInfoBO
 * @description: TODO
 * @date 2025-07-28 14:44:06
 */
@Data
@EqualsAndHashCode(callSuper = true)
@AutoMapper(target = SupplierInfo.class, reverseConvertGenerate = false)
public class SupplierInfoBO extends BaseEntity2 {
    /**
     * 主键ID
     */
    private Long id;

    /**
     * 供应商编码
     */
    private String supplierCode;

    /**
     * 供应商公司名称
     */
    private String supplierName;

    // ============== 基本信息字段 ==============
    /**
     * 开户行
     */
    private String bankName;

    /**
     * 收款账户
     */
    private String bankAccount;

    /**
     * 税种
     */
    private String taxType;

    /**
     * 税率(%)
     */
    private BigDecimal taxRate;

    /**
     * 供应产品类别
     */
    private String productCategory;

    /**
     * 当前等级
     */
    private String currentLevel;


    private String contactRegionCode;
    /**
     * 联系地址(省/市/区)
     */
    private String contactRegion;

    /**
     * 详细地址
     */
    private String detailedAddress;

    // ============== 营业执照OCR识别字段 ==============
    /**
     * 社会信用代码
     */
    private String socialCreditCode;

    /**
     * 营业执照-单位名称
     */
    private String companyName;

    /**
     * 法定代表人
     */
    private String legalPerson;

    /**
     * 注册地址
     */
    private String registeredAddress;

    /**
     * 成立日期
     */
    private String establishDate;

    /**
     * 营业期限/有效期
     */
    private String businessPeriod;

    /**
     * 经营范围
     */
    private String businessScope;

    /**
     * 注册资本
     */
    private String registeredCapital;

    /**
     * 证件编号
     */
    private String certificateNumber;

    /**
     * 类型/组织形式
     */
    private String companyType;

    // ============== 扩展营业执照信息字段 ==============
    /**
     * 核准日期
     */
    private String approvalDate;

    /**
     * 登记机关
     */
    private String registrationAuthority;

    /**
     * 经营状态
     */
    private String businessStatus;

    // ============== 业务管理字段 ==============
    /**
     * 供应商状态(0:停用 1:启用)
     */
    private Integer supplierStatus;

    /**
     * 合作开始日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate cooperationStartDate;

    /**
     * 最后合作日期
     */
    @JsonFormat(pattern = "yyyy-MM-dd")
    private LocalDate lastCooperationDate;

    /**
     * 信用等级
     */
    private String creditRating;

    /**
     * 付款条件
     */
    private String paymentTerms;

    /**
     * 交货周期(天)
     */
    private Integer deliveryCycle;

    /**
     * 质量等级
     */
    private String qualityGrade;

    // ============== 联系信息 ==============
    /**
     * 联系人
     */
    private String contactPerson;

    /**
     * 联系电话
     */
    private String contactPhone;

    /**
     * 联系邮箱
     */
    private String contactEmail;

    /**
     * 传真号码
     */
    private String fax;

    /**
     * 官方网站
     */
    private String website;

    // ============== 附件信息 ==============
    /**
     * 营业执照文件路径
     */
    private String businessLicenseFile;

    /**
     * 其他证件文件(JSON格式)
     */
    private String otherCertificates;

    // ============== 财务信息 ==============
    /**
     * 开票抬头
     */
    private String invoiceTitle;

    /**
     * 开票税号
     */
    private String invoiceTaxNumber;

    /**
     * 开票地址
     */
    @TableField("invoice_address")
    private String invoiceAddress;

    /**
     * 开票电话
     */
    @TableField("invoice_phone")
    private String invoicePhone;

    // ============== OCR识别记录 ==============
    /**
     * OCR识别时间
     */
    @JsonFormat(pattern = "yyyy-MM-dd HH:mm:ss")
    private LocalDateTime ocrRecognitionTime;

    /**
     * OCR识别置信度
     */
    private BigDecimal ocrConfidence;

    /**
     * 是否已人工核验OCR结果
     */
    private Integer isOcrVerified;

    public Long categoryId;
}
